/*
文件名称: personal_center.js
完整存储路径: frontend/static/js/personal_center.js
功能说明:
    个人中心页面的交互逻辑，包含个人信息展示、编辑、密码修改等功能
使用说明:
    在个人中心页面中引入此脚本文件
*/

document.addEventListener('DOMContentLoaded', function() {
    // 获取JWT token
    function getAuthToken() {
        return localStorage.getItem('access_token') || getCookie('access_token');
    }

    // 获取cookie
    function getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return parts.pop().split(';').shift();
    }

    // 设置请求头
    function getHeaders() {
        const token = getAuthToken();
        return {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${token}`
        };
    }

    // 加载用户信息
    async function loadUserInfo() {
        try {
            const response = await fetch('/api/users/me', {
                method: 'GET',
                headers: getHeaders()
            });

            if (response.ok) {
                const data = await response.json();
                if (data.success) {
                    displayUserInfo(data.data);
                } else {
                    console.error('获取用户信息失败:', data.message);
                    Swal.fire('错误', '获取用户信息失败', 'error');
                }
            } else {
                console.error('获取用户信息失败:', response.status);
                Swal.fire('错误', '获取用户信息失败', 'error');
            }
        } catch (error) {
            console.error('获取用户信息异常:', error);
            Swal.fire('错误', '网络错误，请稍后重试', 'error');
        }
    }

    // 显示用户信息
    function displayUserInfo(user) {
        document.getElementById('username').textContent = user.username || '未设置';
        document.getElementById('realName').textContent = user.real_name || '未设置';
        document.getElementById('mobile').textContent = user.mobile || '未设置';
        document.getElementById('email').textContent = user.email || '未设置';
        document.getElementById('gender').textContent = user.gender || '未设置';
        document.getElementById('department').textContent = user.department || '未设置';
        document.getElementById('position').textContent = user.position || '未设置';
        document.getElementById('remark').textContent = user.remark || '未设置';
    }

    // 编辑个人信息按钮事件
    document.getElementById('editProfileBtn').addEventListener('click', async function() {
        try {
            const response = await fetch('/api/users/me', {
                method: 'GET',
                headers: getHeaders()
            });

            if (response.ok) {
                const data = await response.json();
                if (data.success) {
                    fillEditForm(data.data);
                    const modal = new bootstrap.Modal(document.getElementById('editProfileModal'));
                    modal.show();
                } else {
                    Swal.fire('错误', '获取用户信息失败', 'error');
                }
            } else {
                Swal.fire('错误', '获取用户信息失败', 'error');
            }
        } catch (error) {
            console.error('获取用户信息异常:', error);
            Swal.fire('错误', '网络错误，请稍后重试', 'error');
        }
    });

    // 填充编辑表单
    function fillEditForm(user) {
        document.getElementById('editRealName').value = user.real_name || '';
        document.getElementById('editMobile').value = user.mobile || '';
        document.getElementById('editEmail').value = user.email || '';
        document.getElementById('editGender').value = user.gender || '男';
        document.getElementById('editDepartment').value = user.department || '';
        document.getElementById('editPosition').value = user.position || '';
        document.getElementById('editRemark').value = user.remark || '';
    }

    // 保存个人信息
    document.getElementById('saveProfileBtn').addEventListener('click', async function() {
        const formData = {
            real_name: document.getElementById('editRealName').value,
            mobile: document.getElementById('editMobile').value,
            email: document.getElementById('editEmail').value,
            gender: document.getElementById('editGender').value,
            department: document.getElementById('editDepartment').value,
            position: document.getElementById('editPosition').value,
            remark: document.getElementById('editRemark').value
        };

        try {
            const response = await fetch('/api/users/me', {
                method: 'PUT',
                headers: getHeaders(),
                body: JSON.stringify(formData)
            });

            if (response.ok) {
                const data = await response.json();
                if (data.success) {
                    Swal.fire('成功', '个人信息更新成功', 'success');
                    const modal = bootstrap.Modal.getInstance(document.getElementById('editProfileModal'));
                    modal.hide();
                    loadUserInfo(); // 重新加载用户信息
                } else {
                    Swal.fire('错误', data.message || '更新失败', 'error');
                }
            } else {
                Swal.fire('错误', '更新失败', 'error');
            }
        } catch (error) {
            console.error('更新个人信息异常:', error);
            Swal.fire('错误', '网络错误，请稍后重试', 'error');
        }
    });

    // 修改密码表单提交
    document.getElementById('changePasswordForm').addEventListener('submit', async function(e) {
        e.preventDefault();

        const currentPassword = document.getElementById('currentPassword').value;
        const newPassword = document.getElementById('newPassword').value;
        const confirmPassword = document.getElementById('confirmPassword').value;

        // 验证密码
        if (newPassword !== confirmPassword) {
            Swal.fire('错误', '新密码与确认密码不一致', 'error');
            return;
        }

        if (newPassword.length < 6) {
            Swal.fire('错误', '新密码长度不能少于6位', 'error');
            return;
        }

        try {
            const response = await fetch('/api/auth/change', {
                method: 'POST',
                headers: getHeaders(),
                body: JSON.stringify({
                    old_password: currentPassword,
                    new_password: newPassword
                })
            });

            if (response.ok) {
                const data = await response.json();
                if (data.success) {
                    Swal.fire('成功', '密码修改成功', 'success');
                    document.getElementById('changePasswordForm').reset();
                } else {
                    Swal.fire('错误', data.message || '密码修改失败', 'error');
                }
            } else {
                Swal.fire('错误', '密码修改失败', 'error');
            }
        } catch (error) {
            console.error('修改密码异常:', error);
            Swal.fire('错误', '网络错误，请稍后重试', 'error');
        }
    });

    // 页面加载时获取用户信息
    loadUserInfo();
}); 